home *** CD-ROM | disk | FTP | other *** search
- /* $NetBSD: shm.h,v 1.20 1996/04/09 20:55:35 cgd Exp $ */
-
- /*
- * Copyright (c) 1994 Adam Glass
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Adam Glass.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
- /*
- * As defined+described in "X/Open System Interfaces and Headers"
- * Issue 4, p. XXX
- */
-
- #ifndef _SYS_SHM_H_
- #define _SYS_SHM_H_
-
- #include <sys/ipc.h>
-
- #define SHM_RDONLY 010000 /* Attach read-only (else read-write) */
- #define SHM_RND 020000 /* Round attach address to SHMLBA */
- #define SHMLBA CLBYTES /* Segment low boundry address multiple */
-
- /* Some systems (e.g. HP-UX) take these as the second (cmd) arg to shmctl(). */
- #define SHM_LOCK 3 /* Lock segment in memory. */
- #define SHM_UNLOCK 4 /* Unlock a segment locked by SHM_LOCK. */
-
- struct shmid_ds {
- struct ipc_perm shm_perm; /* operation permission structure */
- int shm_segsz; /* size of segment in bytes */
- pid_t shm_lpid; /* process ID of last shm op */
- pid_t shm_cpid; /* process ID of creator */
- short shm_nattch; /* number of current attaches */
- time_t shm_atime; /* time of last shmat() */
- time_t shm_dtime; /* time of last shmdt() */
- time_t shm_ctime; /* time of last change by shmctl() */
- void *shm_internal; /* sysv stupidity */
- };
-
- #include <sys/cdefs.h>
-
- #ifdef _KERNEL
-
- struct shm_list
- {
- struct shmid_ds ds;
- struct shm_list *next;
- };
-
- #define SHMSEG_FREE 0x0200
- #define SHMSEG_REMOVED 0x0400
- #define SHMSEG_ALLOCATED 0x0800
- #define SHMSEG_WANTED 0x1000
-
- #define IPC_SHMID(perm) (((perm).seq << 18) | (((long)&(perm)) & 0x3fffc))
-
- #endif
-
- __BEGIN_DECLS
- void *shmat __P((int, void *, int));
- int shmctl __P((int, int, struct shmid_ds *));
- int shmdt __P((void *));
- int shmget __P((key_t, int, int));
- __END_DECLS
-
- #endif /* !_SYS_SHM_H_ */
-